`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2022/11/05 14:42:38
// Design Name: 
// Module Name: four_bit_CLA
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module four_bit_CLA(p,g,CI,CO);
  input [3:0]p,g;
  input CI;
  output [4:1]CO;
  
  wire [4:1] C; 
  wire [10:1]w;
  
  and
  AND1(w[1],p[0],CI),
  AND2(w[2],p[1],g[0]),
  AND3(w[3],w[1],p[1]),
  AND4(w[4],p[2],g[1]),
  AND5(w[5],p[2],w[2]),
  AND6(w[6],p[2],w[3]),
  AND7(w[7],p[3],g[2]),
  AND8(w[8],w[4],p[3]),
  AND9(w[9],p[3],w[5]),
  AND10(w[10],p[3],w[6]);
  or
  OR1(C[1],g[0],w[1]),
  OR2(C[2],g[1],w[2],w[3]),
  OR3(C[3],g[2],w[4],w[5],w[6]),
  OR4(C[4],g[3],w[7],w[8],w[9],w[10]);
  
  assign CO=C;
endmodule
